function divideConquer(problem,params1,params2,...) {
    // recursion terminator 退出循环
    if(!problem){
        doResult;
        return;
    }

    // prepare data 处理当前逻辑
    const data = prepareData(problem)
    const subproblems = splitProblem(problem,data)

    // conquer subproblems 下探到下一层
    const subResult1 = divideConquer(subproblems[0],p1,...);
    const subResult2 = divideConquer(subproblems[1],p1,...);
    const subResult3 = divideConquer(subproblems[2],p1,...);

    // process and generate th final result 合并子结果
    const result = processResult(subResult1,subResult2,subResult3)

    // revert the current level states
}